package com.jojo.jojomall.ware.service.impl;

import com.jojo.jojomall.ware.vo.skuHasStockVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jojo.common.utils.PageUtils;
import com.jojo.common.utils.Query;

import com.jojo.jojomall.ware.dao.WmsWareSkuDao;
import com.jojo.jojomall.ware.entity.WmsWareSkuEntity;
import com.jojo.jojomall.ware.service.WmsWareSkuService;


@Service("wmsWareSkuService")
public class WmsWareSkuServiceImpl extends ServiceImpl<WmsWareSkuDao, WmsWareSkuEntity> implements WmsWareSkuService {
@Autowired
WmsWareSkuDao wareSkuDao;
    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        IPage<WmsWareSkuEntity> page = this.page(
                new Query<WmsWareSkuEntity>().getPage(params),
                new QueryWrapper<WmsWareSkuEntity>()
        );

        return new PageUtils(page);
    }
//用这个方法 根据传过来的skuids集合查找到对应的是否有库存，以及id号
    @Override
    public List<skuHasStockVo> gerSkuHasStock(List<Long> skuIds) {
        List<skuHasStockVo> HasStockeInfo = skuIds.stream().map(item -> {
//            查询数据库，将查到的仓库信息，封装到对应的skuvo类里 ，返回流里 对数据进行收集
//          因为要查询库存必须减去锁定的库存，所以我们这里用xml来写；
//            编写sql语句：select  sum(stock - stocke_locked) from wms_wars_sku where sku_id=?
            Long count = wareSkuDao.getStockBySkuId(item);
            skuHasStockVo skuHasStockVo = new skuHasStockVo();
            skuHasStockVo.setHasStock(count==null?false:count>0);
            skuHasStockVo.setSkuId(item);
            return skuHasStockVo;
        }).collect(Collectors.toList());
        return HasStockeInfo ;
    }

}
